perm filename DRIVE.FAI[SYS,HE]2 blob sn#016503 filedate 1972-12-18 generic text, type T, neo UTF8
00100		TITLE DRIVE
00200		INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK
00300		INTERNAL HANDFN,ARMFN,ARMPROCEED
00400		EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
00500		EXTERNAL ARM.WAIT,FELT,STOP.ON,ARM.TO
00600		EXTERNAL JOBAPR,UNDERF
00700		EXTERNAL ARM.MESSAGE
00800	
00900		P←17
01000		MASTER←←16657
01100		RELOC←←40
01200		TOUCH←←10
01300		HOLD←←20
01400	ARM.JOINT:MOVEI 
01500		SKIPA
01600	ARMPOS:	MOVEI 1
01700		MOVE 1,ARM.VECTOR
01800		MOVEM 1,THETA
01900		MOVE 1,ARM.TO
02000		MOVEM 1,ETOR
02100		MOVE 1,FELT
02200		MOVEM 1,NERVES
02300		CALLI 1,30
02400		HRRM 1,SEGJOB
02500		CALLI 1,400021
02600		HRLM 1,SEGJOB
02700		MOVEI 1,ARM.STATUS
02800		MOVEM 1,STATUS
02900		MOVEI 1,ARM.SEG
03000		MOVEM 1,SEGMENT
03100		MOVEI 1,ARM.MOTION
03200		HRRM 1,NAME
03300		MOVEI 1,ARM.WAIT
03400		HRLM 1,NAME
03500	SEN2:	JSR ISSERV
03600		PUSHJ P,ACT
03700	RETN:	POPJ 17,
03800	
03900	DOIT:	MOVE 1,-1(17)
04000		MOVEM 1,FILE
04100		MOVEM 1,ARM.WAIT
04200		MOVE 1,-2(17)
04300		HRRZM 1,BAND
04400		MOVEI 2
04500		SETZ 1,
04600		CALLI 1,24
04700		MOVEM 1,PPPN
04800		JSR ISSERV
04900	SEN1:	PUSHJ P,ACT
05000	RETM:	SUB 17,[XWD 3,3]
05100		JRST @3(17)
05200	
05300	ARMFN:	MOVEI 3+HOLD+RELOC
05400		HRL 1,ARM.ME
05500		HRRI 1,ARGS
05600		BLT 1,ARGS+24
05700		MOVE 1,-1(17)
05800		DPB 1,[POINT 9,0,26]
05900		PUSHJ P,ACT
06000		SUB P,[XWD 2,2]
06100		JRST @2(P)
06200	
06300	HANDFN:	MOVEI 3+HOLD
06400		MOVE 1,ARM.ME
06500		MOVE 1,(1)
06600		MOVEM 1,ARGS
06700		JRST ACT
06800	
06900	ARMPRO:	MOVE 1,-1(P)
06925		MOVEM 1,ARGS
06950		MOVEI 3
07000		PUSHJ P,ACT
07010		SUB P,[XWD 2,2]
07020		JRST @2(P)
07030	
07100	
07200	
07300	REQU:	SIXBIT/$ARM$/
07400		EXE
07500	
     

00100	PACK:	;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
00200		MOVE 10,-3(P)
00300		MOVE 1,-2(P)
00400		MOVEM 1,(10)	;TIME
00500		HRLZ 5,-1(P)
00600		BLT 5,4		;PICK UP A0-A4
00700		MOVM 6,4	;WHERE THE LARGEST WILL END UP
00800		MOVEI 5,3
00900	L1:	MOVM 7,(5)
01000		CAMGE 6,7
01100		MOVE 6,7
01200		SOJGE 5,L1
01300		TDZ 6,[XWD 777,777777]	;THE LARGEST IS NOW IN 6
01400		ADD 6,[XWD  12000,0]	;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
01500		HLLM 6,-1(10)
01600		UFA 6,4
01700		HRLM 7,-3(10)
01800		UFA 6,3
01900		HRRM 7,-3(10)
02000		UFA 6,2
02100		HRLM 7,-2(10)
02200		UFA 6,1
02300		HRRM 7,-2(10)
02400		UFA 6,0
02500		HRRM 7,-1(10)
02600		SUB P,[XWD 4,4]
02700		JRST @4(P)
02800	
     

00100	ACT:	HRLI MASTER
00200		SETZM ARM.STATUS
00300		SKIPE STOP.ON
00400		TRO TOUCH
00500		MOVEM EXE
00600		MOVE 1,ARM.WAIT
00700		MOVEM 1,ARM.MOTION
00800		SETZM ARM.WAIT
00900		CALL 1,[SIXBIT/INTENS/]
01000		MOVEM 1,ENBSAV#
01100		SETZ 1,
01200		CALL 1,[SIXBIT/INTENB/]		;TURN OFF INTERRUPTS
01300		MOVE 1,JOBAPR
01400		MOVEM 1,APRSAV#
01500		MOVEI 1,[CALL[SIXBIT/DISMIS/]]
01600		MOVEM 1,JOBAPR
01700		SEND REQU
01800		JRST[		MOVEI 1,2
01900				CALLI 1,31
02000				JRST .-1]
02100		HRLZI 1,40
02200		CALL 1,[SIXBIT/IENBW/]
02300		MOVE 1,APRSAV
02400		MOVEM 1,JOBAPR
02500		MOVE 1,ENBSAV
02600		CALL 1,[SIXBIT/INTENB/]
02700		POPJ P,
02800	
     

00100	;	THIS IS THE 32 WORD MAIL MESSAGE
00200	
00300	EXE:	XWD MASTER,0	;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
00400				;0 READ IN OCTAL
00500				;1 READ IN DECIMAL
00600				;2 EXECUTE FILE
00700				;3 EXECUTE FUNCTION
00800	FILE:	0
00900	PPPN:	0
01000	BAND:	0
01100	SEGJOB:	0
01200	NAME:	0
01300	STATUS:	0
01400	SEGMENT:0
01500	NERVES:	0
01600	ETOR:	0
01700	THETA:	0
01800	ARGS:	BLOCK =21
01900	
     

00100	ISSERV:	0
00200	SEE:	MOVE 1,[SIXBIT/$ARM$/]
00300		CALLI 1,400043
00400		JRST[	CAIE 1,1
00500			JRST[	OUTSTR[ASCIZ/THERE ARE TOO MANY SERVOS ALREADY
00600	PLEASE KILL THEM ALL BUT ONE AND TYPE RET
00700	/]
00800				INCHWL
00900				INCHWL
01000				JRST SEE]
01100			PTYGET 10
01200			JRST[	OUTSTR[ASCIZ/NO PTYS AVAILABLE
01300	/]
01400				CALLI 12]
01500			HRLI 10,0
01600			MOVEI 11,[ASCIZ/L
01700	/]
01800			PTWRS7 10
01900		WH:	PTRD1W 10
02000			CAIE 11,"#"
02100			JRST WH
02200			MOVEI 11,[ASCIZ/SYS,HE
02300	/]
02400			PTWRS7 10
02500		WCC:	PTRD1W 10
02600			CAIE 11,"↑"
02700			JRST WCC
02800			MOVEI 11,[ASCIZ/RUN ARM
02900	/]
03000			PTWRS7 10
03100		WCC2:	PTRD1W 10
03200			CAIE 11,"!"
03300			JRST WCC2
03400			JRST @ISSERV]
03500	GOTONE:	JRST @ISSERV
03600	
03700		END